#include "bsp_voice.h"
#include "bsp_SysTick.h"
// 使用模块 DY SV-5W

void GPIO_VOICE_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE);
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; // PH6 7 8 9
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;                                     // 普通输出模式
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                                     // 推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;                                 // 100Mhz
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;                                      // 上拉
    GPIO_Init(GPIOH, &GPIO_InitStructure);                                             // 初始化

    GPIO_SetBits(GPIOH, GPIO_Pin_6); // 对应IO 0
    GPIO_SetBits(GPIOH, GPIO_Pin_7); // 对应IO 1
    GPIO_SetBits(GPIOH, GPIO_Pin_8); // 对应IO 2
    GPIO_SetBits(GPIOH, GPIO_Pin_9); // 对应IO 3
}
/**
 * @brief 播报声音
 *
 * @param x 1:景点; 2-8:平台2-8； 9:准备完毕
 */
void sound(uint8_t x)
{
    if (x == 1) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6); // 到达直立景点
    } else if (x == 2) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_7); // 平台2
    } else if (x == 3) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6);
        GPIO_SetBits(GPIOH, GPIO_Pin_7); // 到达平台3
    } else if (x == 4) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_8); // 到达平台4
    } else if (x == 5) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6);
        GPIO_SetBits(GPIOH, GPIO_Pin_8); // 到达平台5
    } else if (x == 6) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_7);
        GPIO_SetBits(GPIOH, GPIO_Pin_8); // 到达平台6
    } else if (x == 7) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6);
        GPIO_SetBits(GPIOH, GPIO_Pin_7);
        GPIO_SetBits(GPIOH, GPIO_Pin_8); // 到达平台7
    } else if (x == 8) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_9);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_9); // 到达平台8
    } else if (x == 9) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        GPIO_ResetBits(GPIOH, GPIO_Pin_9);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6);
        GPIO_SetBits(GPIOH, GPIO_Pin_9); // 准备完毕
    } else if (x == 10) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        GPIO_ResetBits(GPIOH, GPIO_Pin_9);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_7);
        GPIO_SetBits(GPIOH, GPIO_Pin_9); // 我要报警了
    } else if (x == 14) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        GPIO_ResetBits(GPIOH, GPIO_Pin_9);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_7);
        GPIO_SetBits(GPIOH, GPIO_Pin_8);
        GPIO_SetBits(GPIOH, GPIO_Pin_9);
    } else if (x == 15) {
        GPIO_ResetBits(GPIOH, GPIO_Pin_6);
        GPIO_ResetBits(GPIOH, GPIO_Pin_7);
        GPIO_ResetBits(GPIOH, GPIO_Pin_8);
        GPIO_ResetBits(GPIOH, GPIO_Pin_9);
        delay_ms(200);
        GPIO_SetBits(GPIOH, GPIO_Pin_6);
        GPIO_SetBits(GPIOH, GPIO_Pin_7);
        GPIO_SetBits(GPIOH, GPIO_Pin_8);
        GPIO_SetBits(GPIOH, GPIO_Pin_9);
    }
}
